#include <stdio.h>
#include <stdlib.h>
#include "os.h"
#include "swis.h"

char *SetTempFS(char *FullName) {
  os_regset r;

  r.r[0] = 11;
  r.r[1] = (int)FullName;
  (void)os_swix(OS_FSControl,&r);
  if (r.r[2] == -1)
    return NULL;
  return (char*)r.r[1];
} /* SetTempFS */


void *FSTempWord(void) {
  os_regset r;

  r.r[0] = 20;
  (void)os_swix(OS_FSControl,&r);
  return (void *)r.r[2];
} /* FSTempWord */


int Free(void *pw, char *DiskName) {
  os_error *Error;
  os_regset r;

  r.r[0] = (int)DiskName;
  r.r[8] = (int)pw;
  if ((Error = os_swix(FileCore_FreeSpace,&r)) != NULL) {
    fprintf(stderr,"%s\n",Error->errmess);
    return 0;
  }
  return r.r[0];
} /* Free */


int main(int argc, char **argv) {
  char *FileName, *dp, *sp;
  void *pw;
  char DiskName[256];

  FileName = argv[1];
  sp = SetTempFS(FileName);
  if (sp == NULL) {
    fprintf(stderr,"Unknown filing system.\n");
    exit(1);
  }
  dp = DiskName;
  while (*sp && *sp != '.')
    *(dp++) = *(sp++);
  *dp = '\0';
  fprintf(stderr,"Disk = %s\n",DiskName);
  pw = FSTempWord();
  printf("Free = %d\n",Free(pw,DiskName));
}
